package com.bl.student.service.biz.pay;

import com.bl.student.common.enums.PayBusinessType;
import com.bl.student.common.enums.PayStatus;
import com.bl.student.common.enums.pay.WechatPayPayInfoVo;
import com.bl.student.dao.model.PayEntity;
import com.bl.student.dao.redis.model.UserInfo;
import com.bl.student.service.vo.pay.AlipayPayInfoVo;
import com.bl.student.service.vo.pay.AlipaySyncResultRequest;
import com.bl.student.service.vo.pay.PayListVo;
import com.bl.student.service.vo.pay.WechatPaySyncResultRequest;
import org.springframework.data.domain.Pageable;

/**
 * Created by yujingyi on 2018/4/14.
 */
public interface PayService {

    PayEntity getPayInfo(String amount, String payer, PayBusinessType payBusinessType, String goodsId);

    AlipayPayInfoVo getVipAlipayAppPayInfo(UserInfo userInfo, String goodsId);

    void syncAlipayResult(AlipaySyncResultRequest alipaySyncResultRequest, UserInfo userInfo);

    void handlePayInfo(String tradeNo, UserInfo userInfo, PayStatus payStatus);

    WechatPayPayInfoVo getWechatPayAppPayInfo(UserInfo userInfo, String activityId);

    WechatPayPayInfoVo getWechatPayAppPayInfo(UserInfo userInfo, String money, String subject);

    void updateWechatPayAppPayInfoSync(WechatPaySyncResultRequest wechatPaySyncResultRequest, UserInfo userInfo);


    PayListVo getPayAndApplyListManager(String userId, String payer, String status, String applyId, Pageable pageable);

    PayListVo getPayAndApplyList(String userId, Pageable pageable, String type);

}
